package com.lqian.time.localdate;


import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * jdk8 新时间api
 * 旧版jdk对时间和日期的设计非常差
 * 1、设计不合理 在java.util和Java.sql 包中都有日期类，java.util.Data同时包含日期和时间 而Java.sql.Date仅仅包含日期 此外用于格式化和解析的类在java.text包下 new Date()年份从1900算起
 *
 * 2、非线程安全 所有的日期类都是可变的 这是Java日期类最大的问题之一 用SimpleFormatter在多线程格式化时会出现问题
 *
 * 3、时区处理麻烦 日期类并不提供国际化 没有时区支持
 *
 * JDK 8中增加了一套全新的日期时间API，这套API设计合理，是线程安全的。新的日期及时间API位于java.time包中，下面是一些关键类。
 * LocalTimeDemo	        表示日期，包含年月日，格式为2019-10-16
 * LocalTime	        表示时间，包含时分秒，格式为16:38:54.158549300
 * LocalDateTime	    表示日期时间，包含年月日，时分秒，格式为2018-09-06T15:33:56.750
 * DateTimeFormatter	日期时间格式化类。
 * lnstant	            时间戳，表示一个特定的时间瞬间。
 * Duration	            用于计算2个时间(LocalTime，时分秒)的距离
 * Period	            用于计算2个日期(LocalTimeDemo，年月日)的距离
 * ZonedDateTime	    包含时区的时间
 *
 */
public class Demo {
    public static void main(String[] args) {

        DateTimeFormatter dtf1 = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        LocalDateTime ldt1 = LocalDateTime.now();

        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        String strDate2 = ldt1.format(dtf2);
        System.out.println(strDate2);

        LocalDateTime newDate = ldt1.parse(strDate2, dtf2);
        System.out.println(newDate);

    }
}
